using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using TM.Data.Contracts;
using TM.DataAccessor;
using TM.ExceptionManager;
using TM.Model;

namespace TM.Data
{
    public class ScopeRepository : IScopeRepository
    {
        private IDataAccessor _dataAccessor;
        private ITMExceptionHandler _exceptionHandler;

        public ScopeRepository(IIoCParams ioCParams)
        {
            _dataAccessor = ioCParams.DataAccessor;
            _exceptionHandler = ioCParams.ExceptionHandler;
#if DEBUG
            _exceptionHandler.Throwable = true;
#endif
        }

        #region Implementation of IRepository<DMNhanVien>

        public IQueryable<Scope> GetAll()
        {
            throw new NotImplementedException();
        }

        public DataTable GetAllAsDataTable()
        {
            throw new NotImplementedException();
        }

        public Scope GetById(Guid id)
        {
            throw new NotImplementedException();
        }

        public DataTable GetByIdAsDataTable(Guid id)
        {
            throw new NotImplementedException();
        }

        public IQueryable<Scope> GetList(Func<Scope, bool> predicate)
        {
            throw new NotImplementedException();
        }

        public Scope GetSingle(Func<Scope, bool> predicate)
        {
            throw new NotImplementedException();
        }

        public Scope GetFisrt(Func<Scope, bool> predicate)
        {
            throw new NotImplementedException();
        }

        public bool Insert(Scope entity)
        {
            throw new NotImplementedException();
        }

        public bool Insert(IList<Scope> entities)
        {
            throw new NotImplementedException();
        }

        public bool Update(Scope entity)
        {
            throw new NotImplementedException();
        }

        public bool Update(IList<Scope> entities)
        {
            throw new NotImplementedException();
        }

        public bool Delete(Scope entity)
        {
            throw new NotImplementedException();
        }

        public bool Delete(IList<Scope> entities)
        {
            throw new NotImplementedException();
        }

        public bool Delete(Guid id)
        {
            throw new NotImplementedException();
        }

        public bool Delete(Func<Scope, bool> predicate)
        {
            throw new NotImplementedException();
        }

        public IQueryable<Scope> GetAllOfTask(Guid[] ids)
        {
            return new List<Scope>
                       {
                           new Scope() {ID = new Guid("4C27AA16-8462-4D09-9BA4-A4035D6B0C4F"), ScopeName = "Scope - Q1"},
                           new Scope() {ID = new Guid("55562D64-4857-41F2-8D85-EEC383138BDD"), ScopeName = "Scope - Q2"}
                       }.AsQueryable();
        }

        #endregion
    }
}